//--------------------Sonic CD HUD Script---------------------//
//--------Scripted by Christian Whitehead 'The Taxman'--------//
//-------Unpacked By Rubberduckycooly's Script Unpacker-------//

// Aliases
// Not all of these are used here in the HUD script, some are just used as a way for other objects to globally transmit values
private alias Object.Value0 : Object.Timer     // Initially set via a loop in the UFO script
private alias Object.Value1 : Object.WitheredBonnieTimer     // Initially set via a loop in the UFO script
private alias Object.Value3 : Object.WitheredBonnieRandom    // Initially set via a loop in the UFO script
private alias Object.Value4 : Object.WitheredBonnieAI    // Initially set via a loop in the UFO script
private alias Object.Value5 : Object.ScareTimer    // Initially set via a loop in the UFO script

private alias Object.Value6 : Object.WitheredBonnieRise    // Initially set via a loop in the UFO script
private alias Object.Value7 : Object.MoveTime    // Initially set via a loop in the UFO script
private alias Object.Value8 : Object.HeadShake    // Initially set via a loop in the UFO script
private alias Object.Value11 : Object.Tweak    // Initially set via a loop in the UFO script

private alias Object.Value23 : Object.Flash
private alias Object.Value24 : Object.TableContainer
private alias Object.Value25 : Object.ScareLeave

private alias Object.Value12 : Object.Cooldown
private alias Object.Value13 : Object.Angry
private alias Object.Value14 : Object.LeaveTime


// Game Mode Aliases
public value OfficePower = 100;

// Priority
private alias 1 : PRIORITY_ACTIVE

private alias 0 : CAM_SHOWSTAGE_0
private alias 1 : CAM_DININGHALL_1
private alias 2 : CAM_BACKSTAGE_2
private alias 3 : CAM_PIRATESCOVE_3
private alias 4 : CAM_WESTHALL_4
private alias 5 : CAM_CLOSET_5
private alias 6 : CAM_WHALLCORNER_6
private alias 7 : CAM_EASTHALL_7
private alias 8 : CAM_EHALLCORNER_8
private alias 9 : CAM_KITCHEN_9
private alias 10 : CAM_BATHROOMS_10

private alias 15 : WitheredBonnie_OFFICEDOOR
private alias 16 : WitheredBonnie_WAITTOSCARE
private alias 17 : WitheredBonnie_SCARE

private alias 2  : CAMERA_MAIN
private alias 10  : CAMERA_EXIT


private alias object.state : WitheredBonnie.State

private alias Object[2].Value2 : Object.ScrollPos


event ObjectMain
//-1 is basically the ai level 0 ig
if Object[5].Type == TypeName[Blank Object]
	switch WitheredBonnie.state
		case 0
			if Object.Cooldown == 0
				Object.WitheredBonnieTimer++
				if Object.WitheredBonnieTimer == 100
					//generate a number which gives you a chance to appear
					Rand(Object.WitheredBonnieRandom, 21)
					Object.WitheredBonnieTimer = 0
				end if	
				if Object.WitheredBonnieAI > Object.WitheredBonnieRandom 
					if CameraEnabled == 1
						Object.Angry++
						if object.Angry == 700
							ForcePull = 1
						end if

						if object[6].state == CAMERA_EXIT
							PlaySfx(SfxName[Stare], 0)	
							Object.WitheredBonnieTimer = 0
							OfficeScary = 1
							WitheredBonnie.State = 1
						end if
					end if	
				end if
			else
				if Object.Cooldown > 0
					Object.Cooldown--
				end if	
			endif	
		break
		case 1
			ForcePull = 0
			Object.WitheredBonnieTimer++
			Object.LeaveTime = 300
			rand(temp2, 50)
			Object.LeaveTime += temp2			
			if Object.WitheredBonnieTimer > Object.LeaveTime		
				if MaskEquipped == 1
					CheckNotEqual(object[26].state, 1)
					temp1 = checkResult
					CheckNotEqual(object[25].state, 1)
					temp1 &= checkResult
					//withered foxy
					CheckNotEqual(object[21].state, 1)
					temp1 &= checkResult
					if temp1 == 1
						StopSfx(SfxName[Stare])
						OfficeScary = 2
					else
						OfficeScary = 3							
					end if
					Object[4].ScareLeave = 255
					Object.Cooldown = 600
					object.state = 0
				else
					object.scale = 412
					OfficeScary = 2
					Object[4].ScareLeave = 255
					StopSfx(SfxName[Stare])
					StopMusic()
					PlaySfx(SfxName[Scream2], 0)		
					object.state = 17
				end if
			end if
		break
	case 16	//wa
			StopMusic()
			PlaySfx(SfxName[Scream2], 0)			
			object.state++
	break
	case 17
		PlayerJumpscared = 1
		if Object.WitheredBonnieRise > -110
			Object.WitheredBonnieRise -= 16
		else
			Object.WitheredBonnieRise = -110
		end if
	break			
	end switch
end if	
end event

event ObjectDraw

//	DrawNumbers(0, 32, 96, WitheredBonnie.state, 3, 8, 0)

//	DrawNumbers(0, 64, 96, Object.WitheredBonnieTimer, 3, 8, 0)

//	DrawNumbers(0, 96, 96, Object.ScareTimer, 3, 8, 0)



		rand(Object.HeadShake, 8)
	

	if WitheredBonnie.state == 17
		object.drawOrder = 5
		temp1 = Screen.xsize
		temp1 /= 2
		temp1 -= 80

		if object.scale < 512
			object.scale += 8
		end if
		
		temp2 = temp1
		temp2 += Object.HeadShake

		DrawSpriteScreenFX(10, FX_SCALE, temp1, Object.WitheredBonnieRise)	//body
		DrawSpriteScreenFX(11, FX_SCALE, temp2, Object.WitheredBonnieRise)	//head
	end if

	switch object.state
	case 1
		DrawSpriteScreenFX(12, FX_INK, Object.ScrollPos, -20)
	break
	end switch
	

end event


event ObjectStartup
	
	LoadSpriteSheet("FNAF/Jumpscares.gif")
	
	// Place the HUD object into reserved object slot 4 and initialise its values
	Object[19].Type = TypeName[WitheredBonnie]
	
	// The object should always be run, regardless if it's within camera bounds or not
	Object[19].Priority = PRIORITY_ACTIVE
	
	// Make the HUD draw ontop of all other sprites, too
	Object[19].DrawOrder = 4

	Object[19].HeadShake = screen.xcenter

	// 0-9 - Numbers 0-9
	SpriteFrame(0, 0, 8, 13, 558, 1)
	SpriteFrame(0, 0, 8, 13, 567, 1)
	SpriteFrame(0, 0, 8, 13, 576, 1)
	SpriteFrame(0, 0, 8, 13, 585, 1)
	SpriteFrame(0, 0, 8, 13, 594, 1)
	SpriteFrame(0, 0, 8, 13, 558, 15)
	SpriteFrame(0, 0, 8, 13, 567, 15)
	SpriteFrame(0, 0, 8, 13, 576, 15)
	SpriteFrame(0, 0, 8, 13, 585, 15)
	SpriteFrame(0, 0, 8, 13, 594, 15)

	
	SpriteFrame(-80, 280, 280, 92, 1, 612)
	SpriteFrame(-20, 100, 194, 227, 168, 269)	//11

	SpriteFrame(140, 41, 124, 248, 1, 363)	//12	


end event


// ========================
// Editor events
// ========================

event RSDKDraw
	DrawSprite(0)
end event


event RSDKLoad
	LoadSpriteSheet("3D_Test/Objects.gif")
	SpriteFrame(0, 0, 24, 16, 206, 58)

	SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
end event
